home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.io.Serializable;
- import java.util.logging.Level;
- import java.util.logging.Logger;
-
- public class ContainerOrderFocusTraversalPolicy extends FocusTraversalPolicy implements Serializable {
- private static final MutableBoolean found = new MutableBoolean();
- private static final Logger log = Logger.getLogger("java.awt.ContainerOrderFocusTraversalPolicy");
- private static final long serialVersionUID = 486933713763926351L;
- private boolean implicitDownCycleTraversal = true;
-
- public Component getComponentAfter(Container var1, Component var2) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Looking for next component in " + var1 + " for " + var2);
- }
-
- if (var1 != null && var2 != null) {
- if (!var1.isFocusTraversalPolicyProvider() && !var1.isFocusCycleRoot()) {
- throw new IllegalArgumentException("aContainer should be focus cycle root or focus traversal policy provider");
- } else if (var1.isFocusCycleRoot() && !var2.isFocusCycleRoot(var1)) {
- throw new IllegalArgumentException("aContainer is not a focus cycle root of aComponent");
- } else {
- synchronized(var1.getTreeLock()) {
- found.value = false;
- Component var4 = this.getComponentAfter(var1, var2, found);
- if (var4 != null) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("After component is " + var4);
- }
-
- return var4;
- } else if (found.value) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Didn't find next component in " + var1 + " - falling back to the first ");
- }
-
- return this.getFirstComponent(var1);
- } else {
- if (log.isLoggable(Level.FINE)) {
- log.fine("After component is null");
- }
-
- return null;
- }
- }
- }
- } else {
- throw new IllegalArgumentException("aContainer and aComponent cannot be null");
- }
- }
-
- private Component getComponentAfter(Container var1, Component var2, MutableBoolean var3) {
- if (var1.isVisible() && var1.isDisplayable()) {
- if (var3.value) {
- if (this.accept(var1)) {
- return var1;
- }
- } else if (var1 == var2) {
- var3.value = true;
- }
-
- for(int var4 = 0; var4 < var1.ncomponents; ++var4) {
- Component var5 = var1.component[var4];
- if (var5 instanceof Container && !((Container)var5).isFocusCycleRoot()) {
- Component var6 = null;
- if (((Container)var5).isFocusTraversalPolicyProvider()) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Entering FTP " + var5);
- }
-
- Container var7 = (Container)var5;
- FocusTraversalPolicy var8 = var7.getFocusTraversalPolicy();
- if (log.isLoggable(Level.FINE)) {
- log.fine("FTP contains " + var2 + ": " + var7.isAncestorOf(var2));
- }
-
- if (var3.value) {
- var6 = var8.getDefaultComponent(var7);
- if (log.isLoggable(Level.FINE)) {
- log.fine("Used FTP for getting default component: " + var6);
- }
- } else {
- var3.value = var7.isAncestorOf(var2);
- if (var3.value) {
- if (var2 == var8.getLastComponent(var7)) {
- var6 = null;
- } else {
- var6 = var8.getComponentAfter(var7, var2);
- if (log.isLoggable(Level.FINE)) {
- log.fine("FTP found next for the component : " + var6);
- }
- }
- }
- }
- } else {
- var6 = this.getComponentAfter((Container)var5, var2, var3);
- }
-
- if (var6 != null) {
- return var6;
- }
- } else if (var3.value) {
- if (this.accept(var5)) {
- return var5;
- }
- } else if (var5 == var2) {
- var3.value = true;
- }
-
- if (var3.value && this.getImplicitDownCycleTraversal() && var5 instanceof Container && ((Container)var5).isFocusCycleRoot()) {
- Container var9 = (Container)var5;
- Component var10 = var9.getFocusTraversalPolicy().getDefaultComponent(var9);
- if (var10 != null) {
- return var10;
- }
- }
- }
-
- return null;
- } else {
- return null;
- }
- }
-
- public Component getComponentBefore(Container var1, Component var2) {
- if (var1 != null && var2 != null) {
- if (!var1.isFocusTraversalPolicyProvider() && !var1.isFocusCycleRoot()) {
- throw new IllegalArgumentException("aContainer should be focus cycle root or focus traversal policy provider");
- } else if (var1.isFocusCycleRoot() && !var2.isFocusCycleRoot(var1)) {
- throw new IllegalArgumentException("aContainer is not a focus cycle root of aComponent");
- } else {
- synchronized(var1.getTreeLock()) {
- found.value = false;
- Component var4 = this.getComponentBefore(var1, var2, found);
- if (var4 != null) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Before component is " + var4);
- }
-
- return var4;
- } else if (found.value) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Didn't find before component in " + var1 + " - falling back to the first ");
- }
-
- return this.getLastComponent(var1);
- } else {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Before component is null");
- }
-
- return null;
- }
- }
- }
- } else {
- throw new IllegalArgumentException("aContainer and aComponent cannot be null");
- }
- }
-
- private Component getComponentBefore(Container var1, Component var2, MutableBoolean var3) {
- if (var1.isVisible() && var1.isDisplayable()) {
- for(int var4 = var1.ncomponents - 1; var4 >= 0; --var4) {
- Component var5 = var1.component[var4];
- if (var5 == var2) {
- var3.value = true;
- } else if (var5 instanceof Container && !((Container)var5).isFocusCycleRoot()) {
- Component var6 = null;
- if (((Container)var5).isFocusTraversalPolicyProvider()) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Entering FTP " + var5);
- }
-
- Container var7 = (Container)var5;
- FocusTraversalPolicy var8 = var7.getFocusTraversalPolicy();
- if (log.isLoggable(Level.FINE)) {
- log.fine("FTP contains " + var2 + ": " + var7.isAncestorOf(var2));
- }
-
- if (var3.value) {
- var6 = var8.getLastComponent(var7);
- if (log.isLoggable(Level.FINE)) {
- log.fine("Used FTP for getting last component: " + var6);
- }
- } else {
- var3.value = var7.isAncestorOf(var2);
- if (var3.value) {
- if (var2 == var8.getFirstComponent(var7)) {
- var6 = null;
- } else {
- var6 = var8.getComponentBefore(var7, var2);
- if (log.isLoggable(Level.FINE)) {
- log.fine("FTP found previous for the component : " + var6);
- }
- }
- }
- }
- } else {
- var6 = this.getComponentBefore((Container)var5, var2, var3);
- }
-
- if (var6 != null) {
- return var6;
- }
- } else if (var3.value && this.accept(var5)) {
- return var5;
- }
- }
-
- if (var3.value) {
- if (this.accept(var1)) {
- return var1;
- }
- } else if (var1 == var2) {
- var3.value = true;
- }
-
- return null;
- } else {
- return null;
- }
- }
-
- public Component getFirstComponent(Container var1) {
- if (var1 == null) {
- throw new IllegalArgumentException("aContainer cannot be null");
- } else {
- synchronized(var1.getTreeLock()) {
- if (var1.isVisible() && var1.isDisplayable()) {
- if (this.accept(var1)) {
- return var1;
- } else {
- for(int var3 = 0; var3 < var1.ncomponents; ++var3) {
- Component var4 = var1.component[var3];
- if (var4 instanceof Container && !((Container)var4).isFocusCycleRoot()) {
- Object var5 = null;
- Container var6 = (Container)var4;
- Component var10;
- if (var6.isFocusTraversalPolicyProvider()) {
- FocusTraversalPolicy var7 = var6.getFocusTraversalPolicy();
- var10 = var7.getDefaultComponent(var6);
- } else {
- var10 = this.getFirstComponent((Container)var4);
- }
-
- if (var10 != null) {
- return var10;
- }
- } else if (this.accept(var4)) {
- return var4;
- }
- }
-
- return null;
- }
- } else {
- return null;
- }
- }
- }
- }
-
- public Component getLastComponent(Container var1) {
- if (var1 == null) {
- throw new IllegalArgumentException("aContainer cannot be null");
- } else {
- if (log.isLoggable(Level.FINE)) {
- log.fine("Looking for the last component in " + var1);
- }
-
- synchronized(var1.getTreeLock()) {
- if (var1.isVisible() && var1.isDisplayable()) {
- for(int var3 = var1.ncomponents - 1; var3 >= 0; --var3) {
- Component var4 = var1.component[var3];
- if (var4 instanceof Container && !((Container)var4).isFocusCycleRoot()) {
- Object var5 = null;
- Container var6 = (Container)var4;
- Component var10;
- if (var6.isFocusTraversalPolicyProvider()) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("\tEntering FTP " + var6);
- }
-
- FocusTraversalPolicy var7 = var6.getFocusTraversalPolicy();
- var10 = var7.getLastComponent(var6);
- } else {
- if (log.isLoggable(Level.FINE)) {
- log.fine("\tEntering sub-container");
- }
-
- var10 = this.getLastComponent((Container)var4);
- }
-
- if (var10 != null) {
- if (log.isLoggable(Level.FINE)) {
- log.fine("\tFound last component : " + var10);
- }
-
- return var10;
- }
- } else if (this.accept(var4)) {
- return var4;
- }
- }
-
- if (this.accept(var1)) {
- return var1;
- } else {
- return null;
- }
- } else {
- return null;
- }
- }
- }
- }
-
- public Component getDefaultComponent(Container var1) {
- return this.getFirstComponent(var1);
- }
-
- public void setImplicitDownCycleTraversal(boolean var1) {
- this.implicitDownCycleTraversal = var1;
- }
-
- public boolean getImplicitDownCycleTraversal() {
- return this.implicitDownCycleTraversal;
- }
-
- protected boolean accept(Component var1) {
- if (var1.isVisible() && var1.isDisplayable() && var1.isFocusable() && var1.isEnabled()) {
- if (!(var1 instanceof Window)) {
- for(Container var2 = var1.getParent(); var2 != null; var2 = var2.getParent()) {
- if (!var2.isEnabled() && !var2.isLightweight()) {
- return false;
- }
-
- if (var2 instanceof Window) {
- break;
- }
- }
- }
-
- return true;
- } else {
- return false;
- }
- }
- }
-